1. Field of the Invention
This invention relates to a means of programming computers and devices that contain embedded computers, using visual programming language (VPL).
2. Description of the Related Art
The following is a tabulation of some prior art that presently appears relevant:
KindPat. No.CodeIssue DatePatentee5,850,548B1Dec. 15, 1998Williams6,683,624B1Jan. 27, 2004Pazel et al.7,047,518B1May 16, 2006Little et al.7,290,244B1Oct. 30, 2007Peck et al.7,949,995B1May 24, 2011Sadlek8,074,203B1Dec. 6, 2011Dye et al.8,291,408B1Oct. 16, 2012Czymontek
VPLs described in prior art relate to audiences who already have some skill in traditional textual-based computer programming. This invention is unique in that the user of the VPL does not require programming skill.
With this invention, end-users develop their own application programs for computers and computing devices using a visual, graphic programming technique involving Parts and Wires. The Parts represent software modules that are developed and fully tested and certified by Original Equipment Manufacturers (OEMs) or Independent Software Vendors (ISVs). End-users can modify exposed properties of a Part, but they do not have access to the programming logic within. An optional Programmable Part may be exposed by the OEM/ISV if the anticipated user audience includes programmers.
Various prior art describes application of VPLs to one specific scenario. Examples of specific scenarios are web apps, test instrumentation, digital signal processing, and data streaming. This invention is a system for using a VPL to program any computer or computing device for many purposes. A major advantage of this invention is that it enables non-programmer end-users to program broad categories of end-user products such as everyday consumer appliances and toys. This invention would serve well as a model for an industry standard.
In a common scenario, OEMs design and test the Parts for the end-user to fulfill the needs of a particular product. The end-user does not need to know how to program. Instead, the end-user simply needs to connect the graphical parts with graphical wires and optionally fine tune the behavior of the parts by editing Part properties.
The Parts are pre-compiled by the OEM into object code. The part object code is combined with the target device kernel to create a working application.
Users fine tune the behavior of a part instance by editing its properties page. That page is also developed and fine-tuned by the OEM.
VPLs present a data synchronization challenge that prior art does not address in a simple and intuitive way for non-programmers. Considered from a dataflow perspective, a VPL design can contain multiple parallel data paths and looping data paths. This invention incorporates a double buffering of the data output messages in each Part. Double buffering enforces a deterministic “lock step” message passing behavior. For example, if a new message appears at the Input Terminal of the first Part Instance in a sequential chain of three parts (a serial pipeline), three distinct “system clocks” occur before possible changes may appear at the Output Terminal of the last Part Instance in the daisy chain. This pipeline behavior is relatively easy for end-users to visualize, as the timing of the message passing is clear and deterministic.
Double buffering also simplifies the issue of optimizing the use multiple central processing unit (CPU) cores in order to implement parallel processing. No part has a dependency upon execution order of any other part. Each part may be assigned to an arbitrary CPU, and may be executed in parallel with other parts.